package com.tedu.api.io;

import java.io.Serializable;
import java.util.Arrays;

/**
 * 流--专门传输 对象 xxx.java文件
 *
 * ObjectOutputStream 对象输出流-写
 * ObjectInputStream 对象输出流-读
 *
 * 以上两个流专门传输：对象功能
 *
 * Person.java文件--先做对象传输处理
 * 步骤：1.对象实现接口-->Serializable 序列化接口【对象转换为二进制】
 *      2.设置版本号：按照正确方式将对象转换为二进制，二进制可以转换为对象
 *
 */
public class Person1 implements Serializable {
    /**
     *版本号:决定类反序列化成功唯一标识。版本号固定写法:静态不可改变值保存
     * 用法:一旦修改类，重新生成一个版本号，建议:写死版本号，抛出异常
     * 类结构发生变化，类实现序列化接口，自动存在静态不可改变值保存
     * 类--版本更新--版本号确定更新版本
     */

    public static final long serialVersionUID=3L;
/**	 transient关键字---程序瘦身
 *作用:只出现序列化接口中，如果对象中很多属性或者很多方法，每个属性
 *每个方法一旦序列化，把每一组属性/方法--转换为二进制，浪费资源
 * 利用transient对象在序列化过程中，指定属性/方法不转换成字节
 */
    public String names;
    public String[] say;

    public Person1() {
    }

    public String getNames() {
        return names;
    }

    public void setNames(String names) {
        this.names = names;
    }

    public String[] getSay() {
        return say;
    }

    public void setSay(String[] say) {
        this.say = say;
    }

    @Override
    public String toString() {
        return "Person1{" +
                "names='" + names + '\'' +
                ", say=" + Arrays.toString(say) +
                '}';
    }
}
